home *** CD-ROM | disk | FTP | other *** search
/ Best of Shareware / Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso / mac / DOS / UTILITY / LZESHE12 / LZEXE.DOC < prev    next >
Text File  |  1989-10-31  |  12KB  |  252 lines

  1.     Documentation pour:
  2.     -------------------
  3.     LZEXE.EXE v0.90 (provisoire) (c) 1989 Fabrice BELLARD
  4.     Compacteur de fichiers EXE.
  5.  
  6.  
  7.     Ce programme fait parti du domaine public (FREEWARE),  donc vous pouvez
  8.   l'utiliser, le copier et le distribuer sans problème. Et vous pouvez même
  9.   en faire un usage commercial, c'est à dire compacter des fichiers EXE que
  10.   vous allez vendre. Mais la vente de LZEXE.EXE est interdite.
  11.  
  12.  
  13.     Matériel:  PC et compatibles, microprocesseur 80286 ou 80386 recommandé
  14.   pour une plus grande vitesse d'exécution.
  15.     Mémoire nécessaire: 256 Ko minimum pour lancer LZEXE.
  16.  
  17.  
  18.     1-Présentation
  19.     --------------
  20.  
  21.         Ce logiciel  compacte  des fichiers  EXE, c'est-à-dire les fichiers
  22.   EXEcutable du monde des  PC.  Mais vous pourriez me dire que  beaucoup de
  23.   logiciels  compactent des fichiers EXE mieux que  celui-ci,  ne serait-ce
  24.   que  l'excellent PKZIP ou  bien  LHARC.  Mais l'avantage de  ce programme
  25.   c'est que vos fichiers EXE une fois compactés peuvent être lancés ! Et le
  26.   décompactage est si  rapide que  pour pratiquement tous  les fichiers, ce
  27.   temps de décompactage est négligeable ! De plus le décompacteur n'utilise
  28.   aucun espace supplémentaire sur disque ou en mémoire vive dans  un disque
  29.   virtuel par exemple:  il  n'utilise que la  RAM  réservée  normalement au
  30.   fichier EXE décompacté.  De plus j'ai beaucoup optimisé mon algorithme de
  31.   compactage  en  vitesse mais aussi  en efficacité:  les fichiers EXE sont
  32.   presque  aussi petits  que les fichiers  ZIP correspondants  et bien plus
  33.   compacts que les anciens fichiers  ARC.  Mais d'autres versions  de LZEXE
  34.   suivront qui  je  l'espère  iront  encore  plus  vite  et  genèreront des
  35.   fichiers plus compacts.
  36.  
  37.     2-Utilisation de LZEXE
  38.     ----------------------
  39.  
  40.         C'est très simple: il suffit de taper sous DOS:
  41.  
  42.     LZEXE nomfichier [chemin]
  43.  
  44.     où "nomfichier"  est le nom du  fichier EXE que vous  voulez compacter.
  45.   L'extension .EXE est ajoutée par défaut.
  46.        "chemin" est facultatif: c'est le repertoire dans lequel vous voulez
  47.   soit mis le fichier EXE compacté et LZTMP.EXE
  48.  
  49.     Attention !  Certains fichiers ne sont EXE que par leur nom:  en effet,
  50.   pour  le DOS,  ce n'est pas l'extension .EXE  qui caractérise ce  type de
  51.   fichier,  c'est le fait qu'il y ait au début les lettres  "MZ" suivies de
  52.   quelques octets qui indiquent la  longueur du fichier,  la taille mémoire
  53.   qu'il occupe,  etc... Ainsi certaines personnes n'hésitent pas à renommer
  54.   des fichiers  COM en  EXE,  et  cela  explique que  LZEXE refuse certains
  55.   fichiers EXE.
  56.  
  57.     Mais  il  existe  une méthode pour  faire accepter  des fichiers  COM à
  58.   LZEXE:  il  suffit d'utiliser COMTOEXE  du même auteur  qui convertit ces
  59.   derniers en EXE (il fait l'inverse de EXE2BIN).
  60.  
  61.     Pour plus de sûreté, LZEXE n'efface pas votre ancien fichier EXE: il le
  62.   renomme en *.OLD.  De plus,  il crée  le fichier temporaire LZTMP.EXE qui
  63.   n'est renommé en *.EXE qu'à la fin du compactage.
  64.  
  65.     3-Conseils d'utilisation
  66.     ------------------------
  67.  
  68.         Pour certains fichiers,  le compactage peut ne pas fonctionner pour
  69.   plusieurs raisons:
  70.  
  71.     -  Le fichier que vous avez spécifié n'est pas un  vrai  EXE. Solution:
  72.   utiliser COMTOEXE.EXE
  73.     -  La table de relocation est trop grande.  Pour comprendre ce message,
  74.   il est nécessaire de connaître  la structure interne d'un fichier EXE: un
  75.   tel  fichier peut  s'étaler  sur plusieurs segments  à la  différence des
  76.   fichiers COM. C'est pourquoi il lui faut une table de valeurs qui indique
  77.   dans  quel  segment se  font  les  branchements  ou  les  appels  de sous
  78.   programmes par exemple.  Et si le fichier est très long, cette table peut
  79.   être très encombrante et empêcher  le compacteur d'agir.  Néanmoins, j'ai
  80.   prévu 16000  adresses de relocation, ce qui devrait suffire pour tous les
  81.   fichiers EXE, même les plus gros.
  82.     -  Le fichier que vous avez spécifié  a déjà été  compacté avec LZEXE.
  83.   Notons  qu'un  autre  compacteur  de  fichiers  existe:   EXEPACK.EXE  de
  84.   Microsoft.  Mais il est de loin beaucoup moins efficace  que le  mien, et
  85.   même si  votre fichier EXE est déjà  compacté  avec  ce  programme, LZEXE
  86.   pourra encore beaucoup compacter.
  87.     -  Le compactage n'a pas été assez efficace et fait perdre  de l'espace
  88.   sur disque:  Hé oui,  ça peut arriver,  mais généralement avec les petits
  89.   EXE (moins  de  2  Ko).  Sinon, vous pourrez pratiquement toujours gagner
  90.   quelques octets.
  91.  
  92.  
  93.           Plus  grave:  certains  fichiers  EXE  compactés  "planteront" la
  94.   machine:
  95.  
  96.     -  Si le programme EXE fait un test sur la taille (comme Turbo Debugger
  97.   par exemple).
  98.     -  S'il possède une protection  qui vérifie l'intégrité du  fichier sur
  99.   disque.
  100.     -  S'il contient des overlays, qui doivent être chargés ensuite et donc
  101.   qui doivent occuper des positions fixes dans le fichier.
  102.     -  Pour les programmes qui marchent sous Windows (de  Microsoft): ce ne
  103.   sont pas  de vrais EXE,  donc ils refuseront  de fonctionner correctement
  104.   sous l'intégrateur.
  105.     (cette liste peut s'allonger parce que je n'ai pas essayé avec beaucoup
  106.   de programmes)
  107.  
  108.  
  109.           Moins  grave:   Certains  programmes  possèdent  des  options  de
  110.   configuration qui modifient le  fichier EXE (Turbo  Pascal  par exemple).
  111.   Dans ce cas, il faut d'abord configurer le programme puis le compacter et
  112.   conserver une version non compactée pour pouvoir la modifier.
  113.  
  114.  
  115.     4-Du point de vue technique (pour les connaisseurs !)
  116.     -----------------------------------------------------
  117.  
  118.     L'algorithme  de  compactage  que j'ai  fait  est fondé sur  la fameuse
  119.   méthode de Ziv Lempel utilisant  un buffer "circulaire"  (ring buffer) et
  120.   une méthode  de recherche des  répétitions de séquences  d'octets par des
  121.   arbres.  Le codage  de  la  position et la  longueur de la  chaîne qui se
  122.   répète   est optimisé par un algorithme annexe  inspiré de  la méthode de
  123.   Huffman. Les octets non compactés sont envoyés tels quels dans le fichier
  124.   car un algorithme de compression annexe (  comme "Adaptive Huffman" (voir
  125.   LHARC)  ou avec des arbres de Shanon-Fano (voir PKZIP))  aurait nécessité
  126.   un temps de décompactage plus  important et surtout  un décompacteur plus
  127.   complexe et long, ce qui aurait en fait allongé le fichier EXE compacté.
  128.  
  129.     Le décompacteur est logé à la fin du fichier EXE et fait 395  octets de
  130.   long (pour cette version).  Il  doit:
  131.     -  Contrôler  le CRC pour s'assurer que personne ne  l'a modifié (utile
  132.   contre les virus). Si oui, afficher le message: "CRC Error"
  133.     -  Se déplacer en haut de la RAM,  puis déplacer le code  compacté pour
  134.   laisser un peu de place au fichier EXE
  135.     -  Décompacter  le  code,  en contrôlant qu'il est  correct, et surtout
  136.   ajuster les segments si on dépasse 64  Ko  (ce qui m'a posé des problèmes
  137.   en terme de vitesse)
  138.     -  Décompacter la  table de relocation,  et mettre à jour  les adresses
  139.   relogeables de fichiers EXE
  140.     - Lancer le programme en mettant à jour CS,IP,SS,SP
  141.  
  142.     C'est tout !!!
  143.  
  144.     Ce décompacteur est à lui seul un petit  chef-d'oeuvre de programmation
  145.   en assembleur 8086: inutile de vous dire que sa mise au point a été assez
  146.   longue.
  147.     Mais le compacteur m'a aussi posé pas mal de  problèmes, notamment pour
  148.   mettre à jour  tous  les pointeurs que  le  décompacteur  utilise  par la
  149.   suite.
  150.  
  151.  
  152.     5-LZEXE et les autres compacteurs
  153.     ---------------------------------
  154.  
  155.     PKARC (dernière version):  LZEXE  fait  beaucoup  mieux, le "crunching"
  156.   (alias Shrinking pour PKZIP) étant un algorithme dépassé...
  157.  
  158.     PKZIP v0.92: LZEXE fait a peu près pareil que le reducing pour les gros
  159.   fichiers.
  160.  
  161.     PKZIP v1.02: mieux que LZEXE avec "imploding", parce que cet algorithme
  162.   est un sur-ensemble du mien, mais il est aussi plus lent à décompacter.
  163.  
  164.     LHARC v1.01:  mieux que LZEXE avec  "freezing",  même  remarque qu'avec
  165.   PKZIP v1.02
  166.  
  167.     LARC: LZEXE fait mieux.
  168.  
  169.     Remarques importantes:
  170.     -  On ne peut pas vraiment comparer ce  que fait LZEXE  avec les autres
  171.   compacteurs puisque dans les fichiers EXE compactés  par mon soft  il y a
  172.   aussi  un  décompacteur  qui le  lance tout  seul.  Néanmoins  les autres
  173.   compacteurs  peuvent  faire  des  fichiers  "self-extracting",  mais  ils
  174.   décompactent sur disque,  sont lents et ajoutent plusieurs dizaines de Ko
  175.   aux fichier compactés (sauf pour LARC et LHARC qui n'ajoutent  qu'1  ou 2
  176.   Ko, mais qui ne décompactent que sur disque malheureusement).
  177.     - Dans presque tous les cas, les compacteurs que j'ai cités ne pourront
  178.   pas recompacter plus un fichier déjà réduit avec LZEXE, ce qui montre son
  179.   efficacité.
  180.  
  181.  
  182.     6-L'avenir...
  183.     -------------
  184.  
  185.     - Il faut que je fasse au plus vite un décompacteur de EXE pour pouvoir
  186.   obtenir le  fichier EXE original  à partir  du fichier  compacté. Mais ce
  187.   décompacteur ne servira pas trop parce qu'on ne compacte pas des fichiers
  188.   EXE pour les décompacter par la suite.
  189.     - J'ai l'intention d'optimiser encore le décompacteur en vitesse, et le
  190.   compacteur  en  efficacité,   en  réduisant  encore  mieux  la  table  de
  191.   relocation par exemple (j'ai déjà  une idée...)  ,d'adjoindre  une option
  192.   mot  de  passe,  et une option pour microprocesseur  80386 qui accélérera
  193.   énormément le décompactage.
  194.     -  un décompacteur de fichiers EXE compactés par EXEPACK (de Microsoft)
  195.   serait aussi très intéressant,  puisque mon compacteur marche mieux quand
  196.   la fichier EXE n'est pas déjà compacté avec ce soft.
  197.     -  je  pense aussi à un  décompacteur  automatique de  documentation du
  198.   genre de LISEZMOI.COM  ou LIST.COM qui serait  très commode  et peut être
  199.   que je vais en faire un.
  200.     -  Enfin, j'espère faire un compacteur "universel" comme PKZIP ou LHARC
  201.   plus lent que LZEXE en décompactage mais qui fera beaucoup mieux  que ces
  202.   derniers.
  203.  
  204.  
  205.  
  206.     7-Mises en garde et voeux...
  207.     ---------------------------
  208.  
  209.     J'espère  que LZEXE  et  les  fichiers  EXE  compactés  par  lui seront
  210.   beaucoup  diffusés  ce  qui m'incitera  à  faire  d'autres  versions plus
  211.   rapides...
  212.  
  213.     Je  décline  toute  responsabilité  en  cas   de   perte  d'information
  214.   occasionnée par LZEXE. Mais rassurez-vous, les algorithmes sont fiables et
  215.   je ne crois pas qu'il y ait beaucoup de bugs. Si le programme EXE compacté
  216.   marche du premier coup, alors il fonctionnera toujours !
  217.  
  218.     Attention !  Je ne vous conseille pas de  compacter et  de diffuser des
  219.   logiciels commerciaux déjà protégés  par un  copyright:  les  auteurs
  220.   risquent d'êtres mécontents...
  221.  
  222.     Mais si  vous  faites un FREEWARE,  un SHAREWARE,  ou même un programme
  223.   commercial,  rien ne vous empêche de le compacter avec LZEXE,  et même je
  224.   vous le conseille:
  225.     -  Vos fichiers EXE seront plus petits et on croira que  vos programmes
  226.   compilés seront faits en assembleur. Que dirons vos concurrents quand ils
  227.   verront des programmes qui font la même chose que les leurs mais 30% plus
  228.   petits ?  De plus vous pourrez mettre  sur disquette (et sur  disque dur)
  229.   plus de programmes, car on a toujours besoin d'une plus grande mémoire de
  230.   masse...
  231.     -  Les  fichiers  compactés sont  moins exposés  aux  fameux  virus car
  232.   ceux-ci ne  peuvent pas les modifier  sans  entraîner  l'émission de "CRC
  233.   error" ou planter le système.
  234.     -  Le  compactage constitue un excellent codage  qui peut  empêcher des
  235.   personnes peu recommandables de modifier les messages ou bien de voir vos
  236.   algorithmes  secrets à moins  de  désassembler  le  décompacteur,  ce qui
  237.   risque de n'être pas très facile, c'est moi qui vous le dit !
  238.  
  239.  
  240.     Voilà,  en espérant que ce  soft vous servira et  qu'il ne  possède pas
  241.   trop de bugs (c'est une version provisoire, attention !)
  242.  
  243.        Fabrice.
  244.  
  245.     Voici mon adresse si vous  voulez des  infos sur les algorithmes  ou si
  246.   vous avez des problèmes:
  247.  
  248.       Fabrice BELLARD
  249.     451 chemin du mas de Matour
  250.         34790 GRABELS  (FRANCE)
  251.  
  252.